package cn.itcast.nems.order.dao.entity;

import cn.itcast.nems.common.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import java.time.LocalDateTime;

import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * <p>
 * 退费凭单
 * </p>
 *
 * @author 刘曙
 * @since 2024-03-26
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("e2_journal_refund")
public class JournalRefund extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID;前缀+6位随机字符（大写字母+数字），示例：TF-I2Z8D8
     */
    private String id;

    /**
     * 学籍ID;需要退费的学籍
     */
    private String studentRecordId;

    /**
     * 退费的班级ID
     */
    private Integer clazzId;

    /**
     * 退费的班级名称
     */
    private String clazzName;

    /**
     * 业务日期。注：可能存在业务实际发生日期与录单日期不一致的情况，此日期应为业务实际发生日期。
     */
    private LocalDateTime bizDate;

    /**
     * 退费类型：退报名费、退学费、退多交学费、退电脑使用费等。;注：数据来自来自于老EMS维护的“费用类型”-“退费”
     * 对应 student_cost_type 表 ID
     */
    private String refundTypeId;

    /**
     * 退费类型;注：数据来自来自于老EMS维护的“费用类型”-“退费”
     */
    private String refundTypeName;

    /**
     * 本次退费金额，单位（分)
     */
    private Integer amount;

    /**
     * 退费原因CODE;来自字典表
     */
    @TableField(updateStrategy = FieldStrategy.ALWAYS)
    private String reasonCode;

    /**
     * 退费原因说明;来自字典表
     */
    @TableField(updateStrategy = FieldStrategy.ALWAYS)
    private String reasonDescription;

    /**
     * 备注;发起人填写的备注
     */
    @TableField(updateStrategy = FieldStrategy.ALWAYS)
    private String remark;

    /**
     * 是否贷款退费：0否、1是
     */
    private Boolean loanFlag;

    /**
     * 贷款公司
     */
    @TableField(updateStrategy = FieldStrategy.ALWAYS)
    private String loanCompany;

    /**
     * 是否特殊退费：0否、1是
     */
    private Boolean specialFlag;

    /**
     * 是否已开发票：0否、1是
     */
    private Boolean invoiceFlag;

    /**
     * 发票号
     */
    @TableField(updateStrategy = FieldStrategy.ALWAYS)
    private String invoiceNo;

    /**
     * 状态;枚举值：草稿｜DRAFT、待审批｜PENDING、审批中｜APPROVING、审批未通过｜REJECTED、已完成｜FINISHED
     */
    private String state;

    /**
     * 关联的退学凭单ID;如果退费来自于退学退费的申请，退学凭单ID不应该为空！
     */
    private String journalDropoutId;

    /**
     * 业务线ID;来自于订单上的业务线
     */
    private Integer businessLineId;

    /**
     * 业务线名称;来自于订单上的业务线
     */
    private String businessLineName;
}
